package com.holdtime.jtt809.taxi.module.service.impl;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import com.holdtime.jtt809.taxi.module.entity.LocationNewDO;
import com.holdtime.jtt809.taxi.module.entity.mapper.LocationNewMapper;
import com.holdtime.jtt809.taxi.module.model.vo.LocationNewPageReqVO;
import com.holdtime.jtt809.taxi.module.model.vo.LocationNewSaveReqVO;
import com.holdtime.jtt809.taxi.module.service.LocationNewService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.holdtime.jtt809.taxi.module.enums.Taxi809ErrorCodeConstants.LOCATION_NEW_NOT_EXISTS;

/**
 * 车辆定位信息 Service 实现类
 *
 * @author 超级管理员
 */
@Service
@Validated
public class LocationNewServiceImpl implements LocationNewService {
    @Resource
    private LocationNewMapper locationNewMapper;

    @Override
    public String createLocationNew(LocationNewSaveReqVO createReqVO) {
        // 插入
        LocationNewDO locationNew = BeanUtils.toBean(createReqVO, LocationNewDO.class);
        locationNewMapper.insert(locationNew);
        // 返回
        return locationNew.getVehicleNo();
    }

    @Override
    public void updateLocationNew(LocationNewSaveReqVO updateReqVO) {
        // 校验存在
        validateLocationNewExists(updateReqVO.getVehicleNo());
        // 更新
        LocationNewDO updateObj = BeanUtils.toBean(updateReqVO, LocationNewDO.class);
        locationNewMapper.updateById(updateObj);
    }

    @Override
    public void deleteLocationNew(String id) {
        // 校验存在
        validateLocationNewExists(id);
        // 删除
        locationNewMapper.deleteById(id);
    }

    private void validateLocationNewExists(String id) {
        if (locationNewMapper.selectById(id) == null) {
            throw exception(LOCATION_NEW_NOT_EXISTS);
        }
    }

    @Override
    public LocationNewDO getLocationNew(String id) {
        return locationNewMapper.selectById(id);
    }

    @Override
    public PageResult<LocationNewDO> getLocationNewPage(LocationNewPageReqVO pageReqVO) {
        return locationNewMapper.selectPage(pageReqVO);
    }

}